home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / CodeFragments.idl < prev    next >
Text File  |  1996-05-01  |  9KB  |  260 lines

  1. /*
  2.      File:        CodeFragments.idl
  3.  
  4.      Contains:    Public Code Fragment Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7 and System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. /*
  19.  *
  20.  ===========================================================================================
  21.  The Code Fragment Manager API
  22.  =============================
  23. */
  24. #ifndef __CODEFRAGMENTS_IDL__
  25. #define __CODEFRAGMENTS_IDL__
  26.  
  27. #include <somobj.idl>
  28. #include <somcls.idl>
  29.  
  30. #ifndef __TYPES_IDL__
  31. #include <Types.idl>
  32. #endif
  33. #ifndef __FILES_IDL__
  34. #include <Files.idl>
  35. #endif
  36. #if FOR_SYSTEM8_PREEMPTIVE
  37. #ifndef __KERNEL_IDL__
  38. #include <Kernel.idl>
  39. #endif
  40. #ifndef __FILEMANAGERTYPES_IDL__
  41. #include <FileManagerTypes.idl>
  42. #endif
  43. #ifndef __TEXTOBJECTS_IDL__
  44. #include <TextObjects.idl>
  45. #endif
  46. #endif
  47.  
  48. #ifdef __SOMIDL__
  49.  
  50. /*
  51.  ß
  52.  ===========================================================================================
  53.  Universal types and constants
  54.  =============================
  55. */
  56. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  57. /*
  58.  ----------------------------------------------------------------------------
  59.  These declarations are for System 7 and all System 8 execution environments.
  60. */
  61. typedef OSType                    CFragArchitecture;
  62.  
  63. #if GENERATINGPOWERPC
  64. #endif
  65. #if GENERATING68K
  66. #endif
  67. typedef UInt32                    CFragVersionNumber;
  68.  
  69. typedef UInt8                    CFragUsage;
  70.  
  71. typedef UInt8                    CFragLocatorKind;
  72.  
  73. /*
  74.  --------------------------------------------------------------------------------------
  75.  A 'cfrg' resource consists of a header followed by a sequence of variable length
  76.  members.  The constant kDefaultCFragNameLen only provides for a legal ANSI declaration
  77.  and for a reasonable display in a debugger.  The actual name field is cut to fit.
  78.  There may be "extensions" after the name, the memberSize field includes them.  The
  79.  general form of an extension is a 16 bit type code followed by a 16 bit size in bytes.
  80.  Only one standard extension type is defined at present, it is used by SOM's searching
  81.  mechanism.
  82. */
  83. typedef SOMFourByteStruct        CFragUsage1Union;            /* Derived from a struct of 4 bytes in size */
  84.  
  85. typedef SOMTwoByteStruct        CFragUsage2Union;            /* Derived from a struct of 2 bytes in size */
  86.  
  87. typedef SOMLargeStruct            CFragWhere1Union;            /* Derived from a struct of 8 bytes in size */
  88.  
  89. typedef SOMTwoByteStruct        CFragWhere2Union;            /* Derived from a struct of 2 bytes in size */
  90.  
  91. typedef SOMLargeStruct            CFragResourceMember;        /* Derived from a struct of 58 bytes in size */
  92.  
  93. typedef OpaquePtr                CFragResourceMemberPtr;        /* Substituted OpaquePtr for ``CFragResourceMember*'' */
  94.  
  95. typedef SOMFourByteStruct        CFragResourceExtensionHeader; /* Derived from a struct of 4 bytes in size */
  96.  
  97. typedef OpaquePtr                CFragResourceExtensionHeaderPtr; /* Substituted OpaquePtr for ``CFragResourceExtensionHeader*'' */
  98.  
  99. typedef SOMLargeStruct            CFragResourceSearchExtension; /* Derived from a struct of 9 bytes in size */
  100.  
  101. typedef OpaquePtr                CFragResourceSearchExtensionPtr; /* Substituted OpaquePtr for ``CFragResourceSearchExtension*'' */
  102.  
  103. typedef SOMLargeStruct            CFragResource;                /* Derived from a struct of 90 bytes in size */
  104.  
  105. typedef OpaquePtr                CFragResourcePtr;            /* Substituted OpaquePtr for ``CFragResource*'' */
  106.  
  107. typedef OpaquePtr                CFragConnectionID;
  108.  
  109. typedef OpaquePtr                CFragClosureID;
  110.  
  111. typedef OpaquePtr                CFragContainerID;
  112.  
  113. typedef OpaquePtr                CFragContextID;
  114.  
  115. typedef UInt32                    CFragLoadOptions;
  116.  
  117. typedef UInt8                    CFragSymbolClass;
  118.  
  119. #endif
  120. /*
  121.  ß
  122.  ===========================================================================================
  123.  System 7 Services (Deprecated in System 8)
  124.  ==========================================
  125. */
  126. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  127. /*
  128.  ---------------------------------------------------------------------------------
  129.  These declarations are for System 7 and the System 8 cooperative environment, but
  130.  should be avoided under System 8.  Better alternatives exist for System 8.
  131. */
  132. #endif
  133. /*
  134.  ß
  135.  ===========================================================================================
  136.  System 8 Services (Not available in System 7)
  137.  =============================================
  138. */
  139. #if FOR_SYSTEM8_PREEMPTIVE
  140. /*
  141.  ---------------------------------------------------------------------------------
  142.  These declarations are for all System 8 execution environments, but not System 7.
  143. */
  144. typedef SOMLargeStruct            CFragRegisteredFileInfo;    /* Derived from a struct of 12 bytes in size */
  145.  
  146. typedef UInt8                    CFragCompatibility;
  147.  
  148. typedef UInt32                    CFragShortVersionPair;
  149.  
  150. #endif
  151. /*
  152.  ß
  153.  ===========================================================================================
  154.  Initialization & Termination Routines
  155.  =====================================
  156.  -----------------------------------------------------------------------------------------
  157.  A fragment's initialization and termination routines are called when a new incarnation of
  158.  the fragment is created or destroyed, respectively.  Exactly when this occurs depends on
  159.  what kinds of section sharing the fragment has and how the fragment is prepared.  Import
  160.  libraries have at most one incarnation per process.  Fragments prepared with option
  161.  kPrivateCFragCopy may have many incarnations per process.
  162.  The initialization function is passed a pointer to an initialization information structure
  163.  and returns an OSErr.  If an initialization function returns a non-zero value the entire
  164.  closure of which it is a part fails.  The CFragInitBlock type has different visible parts
  165.  under System 7 and System 8, but is of course the same internally.  The C prototype for an
  166.  initialization function is:
  167.         pascal OSErr    CFragInitFunction    ( const CFragInitBlock *    initBlock );
  168.  The termination procedure takes no parameters and returns nothing.  The C prototype for a
  169.  termination procedure is:
  170.         pascal void        CFragTermProcedure    ( void );
  171. */
  172. #if FOR_OPAQUE_SYSTEM_DATA_STRUCTURES
  173. /*
  174.  --------------------------------------------------------------------------------------
  175.  These declarations are the preferred form for System 8, hiding implementation details.
  176. */
  177. typedef SOMLargeStruct            CFragOpaqueInitBlock;        /* Derived from a struct of 44 bytes in size */
  178.  
  179. typedef OpaquePtr                CFragOpaqueInitBlockPtr;    /* Substituted OpaquePtr for ``CFragOpaqueInitBlock*'' */
  180.  
  181. typedef CFragOpaqueInitBlock    CFragInitBlock;
  182.  
  183. typedef CFragOpaqueInitBlockPtr CFragInitBlockPtr;
  184.  
  185. #else
  186. /*
  187.  --------------------------------------------------------------------------------------
  188.  These declarations are for System 7.  They may be used in System 8 but expose details.
  189. */
  190. typedef SOMLargeStruct            CFragSystem7MemoryLocator;    /* Derived from a struct of 12 bytes in size */
  191.  
  192. typedef SOMLargeStruct            CFragSystem7DiskFlatLocator; /* Derived from a struct of 12 bytes in size */
  193.  
  194. /* ! This must have a file specification at the same offset as a disk flat locator!*/
  195. typedef SOMLargeStruct            CFragSystem7SegmentedLocator; /* Derived from a struct of 12 bytes in size */
  196.  
  197. typedef SOMLargeStruct            CFragSystem7Locator;        /* Derived from a struct of 40 bytes in size */
  198.  
  199. typedef OpaquePtr                CFragSystem7LocatorPtr;        /* Substituted OpaquePtr for ``CFragSystem7Locator*'' */
  200.  
  201. typedef SOMLargeStruct            CFragSystem7InitBlock;        /* Derived from a struct of 36 bytes in size */
  202.  
  203. typedef OpaquePtr                CFragSystem7InitBlockPtr;    /* Substituted OpaquePtr for ``CFragSystem7InitBlock*'' */
  204.  
  205. typedef CFragSystem7InitBlock    CFragInitBlock;
  206.  
  207. typedef CFragSystem7InitBlockPtr CFragInitBlockPtr;
  208.  
  209. #endif
  210. typedef OpaquePtr CFragInitFunction;
  211. typedef OpaquePtr CFragTermProcedure;
  212. /*
  213.  ß
  214.  ===========================================================================================
  215.  Old Name Spellings
  216.  ==================
  217.  -------------------------------------------------------------------------------------------
  218.  We've tried to reduce the risk of name collisions in the future by introducing the phrase
  219.  "CFrag" into constant and type names.  The old names are defined below in terms of the new.
  220. */
  221. #if OLDROUTINENAMES
  222. typedef CFragConnectionID        ConnectionID;
  223.  
  224. typedef CFragLoadOptions        LoadFlags;
  225.  
  226. typedef CFragSymbolClass        SymClass;
  227.  
  228. typedef CFragInitBlock            InitBlock;
  229.  
  230. typedef CFragInitBlockPtr        InitBlockPtr;
  231.  
  232. #if !FOR_OPAQUE_SYSTEM_DATA_STRUCTURES
  233. typedef CFragSystem7MemoryLocator MemFragment;
  234.  
  235. typedef CFragSystem7DiskFlatLocator DiskFragment;
  236.  
  237. typedef CFragSystem7SegmentedLocator SegmentedFragment;
  238.  
  239. typedef CFragSystem7Locator        FragmentLocator;
  240.  
  241. typedef CFragSystem7LocatorPtr FragmentLocatorPtr;
  242.  
  243. typedef CFragSystem7MemoryLocator CFragHFSMemoryLocator;
  244.  
  245. typedef CFragSystem7DiskFlatLocator CFragHFSDiskFlatLocator;
  246.  
  247. typedef CFragSystem7SegmentedLocator CFragHFSSegmentedLocator;
  248.  
  249. typedef CFragSystem7Locator        CFragHFSLocator;
  250.  
  251. typedef CFragSystem7LocatorPtr CFragHFSLocatorPtr;
  252.  
  253. #endif
  254. #endif
  255.  
  256. #endif /* __SOMIDL__ */
  257.  
  258. #endif /* __CODEFRAGMENTS_IDL__ */
  259.  
  260.